<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>デバッグの工夫 | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀ANSI版開発トップへ</a>
        <li><div class="list-title">
    <span class="no">2621</span>
    <a class="thread-title" href="2621.html#2621">デバッグの工夫</a></div>
    </li>
    </ul><ul class="main"><li><section><h1 id=2621>
    <span class="no">[2621]</span>
    <a class="thread-title" href="#2621">デバッグの工夫</a>
    <span class="author">kh</span>
    <time datetime="2003-03-15T00:42:45">2003年03月15日 00:42</time></h1>
    <div class="body">はじめまして、ソースファイルを読ませてもらって<br>いろいろ参考にさせてもらってます。<br><br>デバッグ（ＶＣ６で）するときのちょっとした工夫を<br>書きますので簡単ですので試してみてください。<br><br>Debug.h において---------------<br><br>#ifdef _DEBUG<br>    #define MYTRACE DebugOut<br><br>    // 以下の４行をここに追加<br>    #define INDNT_N 4<br>    #define MYTRACE_INDNT_BGN(X) DebugOut("==&gt; " #X " \n"), dbgIndnt += INDNT_N<br>    #define MYTRACE_INDNT_END(X) dbgIndnt -= INDNT_N, DebugOut("&lt;== " #X " \n")<br>    extern  int dbgIndnt;//@@@@@@<br><br>#endif<br>----------------------------------<br><br>Debug.cpp において-----------<br><br>これを追加<br>int dbgIndnt = 0;<br><br>この関数を入れ替え<br>void DebugOut( LPCTSTR lpFmt, ...)<br>{<br>    static TCHAR szText0[16000];<br>    strcpy(szText0,"");<br>    for ( int i = 0; i &lt; dbgIndnt; i ++ )   strcat(szText0," ");<br>    strcat(szText0,lpFmt);<br><br>    static TCHAR szText[16000];<br>    va_list argList;<br>    va_start(argList, lpFmt);<br>    ::wvsprintf( szText, szText0, argList );<br>    ::OutputDebugString( szText );<br><br>    ::Sleep(1); // Norio Nakatani, 2001/06/23 大量にトレースするときのために<br><br>    va_end(argList);<br>    return;<br>}<br>--------------------------------<br><br>これだけで以下のようにソースファイルに記述するだけで<br><br>--------------------------------<br>void CEditView::func_A()<br>{<br>    MYTRACE_INDNT_BGN(func_A);<br>    int x = 11, y = 22;<br>    MYTRACE( "x=%d y=%d\n", x, y );<br> <br>    func_B();<br><br>    MYTRACE_INDNT_END(func_A);<br>}<br>void CEditView::func_B()<br>{<br>    MYTRACE_INDNT_BGN(func_B);<br>    int x = 33, y = 44;<br>    MYTRACE( "x=%d y=%d\n", x, y );<br><br>    MYTRACE_INDNT_END(func_B);<br>}<br><br>LRESULT CEditView::OnMOUSEWHEEL( WPARAM wParam, LPARAM lParam )<br>{<br>    MYTRACE_INDNT_BGN(マウスホイールのメッセージ処理);<br> <br>    func_A();<br>    ・・・・・・・・・・・・・・・・・・<br>    ・・・・・・・・・・・・・・・・・・<br><br>    MYTRACE( "xPos=%d yPos=%d\n", xPos, yPos );<br><br>    MYTRACE_INDNT_END(マウスホイールのメッセージ処理);<br>    return 0;<br>}<br>--------------------------<br><br>以下のようにデバッグウィンドウにインデントされて表示されます。<br><br>--------------------------<br><br>==&gt; マウスホイールのメッセージ処理 <br>    ==&gt; func_A <br>        x=11 y=22<br>        ==&gt; func_B <br>            x=33 y=44<br>        &lt;== func_B<br>    &lt;== func_A<br>    xPos=5989260 yPos=0 <br>&lt;== マウスホイールのメッセージ処理 <br><br>--------------------------<br><br>これだけでだいぶ読みやすくなると思います。<br><br></div></section>
    </li></ul></body></html>